package com.desksoft.ecommerce.entity.logistics.dto;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class BalanceExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public BalanceExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andAccountcodeIsNull() {
            addCriterion("AccountCode is null");
            return (Criteria) this;
        }

        public Criteria andAccountcodeIsNotNull() {
            addCriterion("AccountCode is not null");
            return (Criteria) this;
        }

        public Criteria andAccountcodeEqualTo(String value) {
            addCriterion("AccountCode =", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeNotEqualTo(String value) {
            addCriterion("AccountCode <>", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeGreaterThan(String value) {
            addCriterion("AccountCode >", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeGreaterThanOrEqualTo(String value) {
            addCriterion("AccountCode >=", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeLessThan(String value) {
            addCriterion("AccountCode <", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeLessThanOrEqualTo(String value) {
            addCriterion("AccountCode <=", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeLike(String value) {
            addCriterion("AccountCode like", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeNotLike(String value) {
            addCriterion("AccountCode not like", value, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeIn(List<String> values) {
            addCriterion("AccountCode in", values, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeNotIn(List<String> values) {
            addCriterion("AccountCode not in", values, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeBetween(String value1, String value2) {
            addCriterion("AccountCode between", value1, value2, "accountcode");
            return (Criteria) this;
        }

        public Criteria andAccountcodeNotBetween(String value1, String value2) {
            addCriterion("AccountCode not between", value1, value2, "accountcode");
            return (Criteria) this;
        }

        public Criteria andBalancetypeIsNull() {
            addCriterion("BalanceType is null");
            return (Criteria) this;
        }

        public Criteria andBalancetypeIsNotNull() {
            addCriterion("BalanceType is not null");
            return (Criteria) this;
        }

        public Criteria andBalancetypeEqualTo(String value) {
            addCriterion("BalanceType =", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeNotEqualTo(String value) {
            addCriterion("BalanceType <>", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeGreaterThan(String value) {
            addCriterion("BalanceType >", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeGreaterThanOrEqualTo(String value) {
            addCriterion("BalanceType >=", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeLessThan(String value) {
            addCriterion("BalanceType <", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeLessThanOrEqualTo(String value) {
            addCriterion("BalanceType <=", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeLike(String value) {
            addCriterion("BalanceType like", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeNotLike(String value) {
            addCriterion("BalanceType not like", value, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeIn(List<String> values) {
            addCriterion("BalanceType in", values, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeNotIn(List<String> values) {
            addCriterion("BalanceType not in", values, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeBetween(String value1, String value2) {
            addCriterion("BalanceType between", value1, value2, "balancetype");
            return (Criteria) this;
        }

        public Criteria andBalancetypeNotBetween(String value1, String value2) {
            addCriterion("BalanceType not between", value1, value2, "balancetype");
            return (Criteria) this;
        }

        public Criteria andWsbalanceIsNull() {
            addCriterion("WSBalance is null");
            return (Criteria) this;
        }

        public Criteria andWsbalanceIsNotNull() {
            addCriterion("WSBalance is not null");
            return (Criteria) this;
        }

        public Criteria andWsbalanceEqualTo(BigDecimal value) {
            addCriterion("WSBalance =", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceNotEqualTo(BigDecimal value) {
            addCriterion("WSBalance <>", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceGreaterThan(BigDecimal value) {
            addCriterion("WSBalance >", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("WSBalance >=", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceLessThan(BigDecimal value) {
            addCriterion("WSBalance <", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("WSBalance <=", value, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceIn(List<BigDecimal> values) {
            addCriterion("WSBalance in", values, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceNotIn(List<BigDecimal> values) {
            addCriterion("WSBalance not in", values, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("WSBalance between", value1, value2, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsbalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("WSBalance not between", value1, value2, "wsbalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceIsNull() {
            addCriterion("WSPreBalance is null");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceIsNotNull() {
            addCriterion("WSPreBalance is not null");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceEqualTo(BigDecimal value) {
            addCriterion("WSPreBalance =", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceNotEqualTo(BigDecimal value) {
            addCriterion("WSPreBalance <>", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceGreaterThan(BigDecimal value) {
            addCriterion("WSPreBalance >", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("WSPreBalance >=", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceLessThan(BigDecimal value) {
            addCriterion("WSPreBalance <", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("WSPreBalance <=", value, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceIn(List<BigDecimal> values) {
            addCriterion("WSPreBalance in", values, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceNotIn(List<BigDecimal> values) {
            addCriterion("WSPreBalance not in", values, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("WSPreBalance between", value1, value2, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andWsprebalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("WSPreBalance not between", value1, value2, "wsprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceIsNull() {
            addCriterion("GRNBalance is null");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceIsNotNull() {
            addCriterion("GRNBalance is not null");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceEqualTo(BigDecimal value) {
            addCriterion("GRNBalance =", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceNotEqualTo(BigDecimal value) {
            addCriterion("GRNBalance <>", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceGreaterThan(BigDecimal value) {
            addCriterion("GRNBalance >", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("GRNBalance >=", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceLessThan(BigDecimal value) {
            addCriterion("GRNBalance <", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("GRNBalance <=", value, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceIn(List<BigDecimal> values) {
            addCriterion("GRNBalance in", values, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceNotIn(List<BigDecimal> values) {
            addCriterion("GRNBalance not in", values, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("GRNBalance between", value1, value2, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnbalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("GRNBalance not between", value1, value2, "grnbalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceIsNull() {
            addCriterion("GRNPreBalance is null");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceIsNotNull() {
            addCriterion("GRNPreBalance is not null");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceEqualTo(BigDecimal value) {
            addCriterion("GRNPreBalance =", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceNotEqualTo(BigDecimal value) {
            addCriterion("GRNPreBalance <>", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceGreaterThan(BigDecimal value) {
            addCriterion("GRNPreBalance >", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("GRNPreBalance >=", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceLessThan(BigDecimal value) {
            addCriterion("GRNPreBalance <", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("GRNPreBalance <=", value, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceIn(List<BigDecimal> values) {
            addCriterion("GRNPreBalance in", values, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceNotIn(List<BigDecimal> values) {
            addCriterion("GRNPreBalance not in", values, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("GRNPreBalance between", value1, value2, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andGrnprebalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("GRNPreBalance not between", value1, value2, "grnprebalance");
            return (Criteria) this;
        }

        public Criteria andBilldateIsNull() {
            addCriterion("BillDate is null");
            return (Criteria) this;
        }

        public Criteria andBilldateIsNotNull() {
            addCriterion("BillDate is not null");
            return (Criteria) this;
        }

        public Criteria andBilldateEqualTo(Date value) {
            addCriterion("BillDate =", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateNotEqualTo(Date value) {
            addCriterion("BillDate <>", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateGreaterThan(Date value) {
            addCriterion("BillDate >", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateGreaterThanOrEqualTo(Date value) {
            addCriterion("BillDate >=", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateLessThan(Date value) {
            addCriterion("BillDate <", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateLessThanOrEqualTo(Date value) {
            addCriterion("BillDate <=", value, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateIn(List<Date> values) {
            addCriterion("BillDate in", values, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateNotIn(List<Date> values) {
            addCriterion("BillDate not in", values, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateBetween(Date value1, Date value2) {
            addCriterion("BillDate between", value1, value2, "billdate");
            return (Criteria) this;
        }

        public Criteria andBilldateNotBetween(Date value1, Date value2) {
            addCriterion("BillDate not between", value1, value2, "billdate");
            return (Criteria) this;
        }

        public Criteria andBalance1IsNull() {
            addCriterion("Balance1 is null");
            return (Criteria) this;
        }

        public Criteria andBalance1IsNotNull() {
            addCriterion("Balance1 is not null");
            return (Criteria) this;
        }

        public Criteria andBalance1EqualTo(BigDecimal value) {
            addCriterion("Balance1 =", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1NotEqualTo(BigDecimal value) {
            addCriterion("Balance1 <>", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1GreaterThan(BigDecimal value) {
            addCriterion("Balance1 >", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1GreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance1 >=", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1LessThan(BigDecimal value) {
            addCriterion("Balance1 <", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1LessThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance1 <=", value, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1In(List<BigDecimal> values) {
            addCriterion("Balance1 in", values, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1NotIn(List<BigDecimal> values) {
            addCriterion("Balance1 not in", values, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1Between(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance1 between", value1, value2, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance1NotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance1 not between", value1, value2, "balance1");
            return (Criteria) this;
        }

        public Criteria andBalance2IsNull() {
            addCriterion("Balance2 is null");
            return (Criteria) this;
        }

        public Criteria andBalance2IsNotNull() {
            addCriterion("Balance2 is not null");
            return (Criteria) this;
        }

        public Criteria andBalance2EqualTo(BigDecimal value) {
            addCriterion("Balance2 =", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2NotEqualTo(BigDecimal value) {
            addCriterion("Balance2 <>", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2GreaterThan(BigDecimal value) {
            addCriterion("Balance2 >", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2GreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance2 >=", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2LessThan(BigDecimal value) {
            addCriterion("Balance2 <", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2LessThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance2 <=", value, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2In(List<BigDecimal> values) {
            addCriterion("Balance2 in", values, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2NotIn(List<BigDecimal> values) {
            addCriterion("Balance2 not in", values, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2Between(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance2 between", value1, value2, "balance2");
            return (Criteria) this;
        }

        public Criteria andBalance2NotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance2 not between", value1, value2, "balance2");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceIsNull() {
            addCriterion("PrepayBalance is null");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceIsNotNull() {
            addCriterion("PrepayBalance is not null");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceEqualTo(BigDecimal value) {
            addCriterion("PrepayBalance =", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceNotEqualTo(BigDecimal value) {
            addCriterion("PrepayBalance <>", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceGreaterThan(BigDecimal value) {
            addCriterion("PrepayBalance >", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("PrepayBalance >=", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceLessThan(BigDecimal value) {
            addCriterion("PrepayBalance <", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("PrepayBalance <=", value, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceIn(List<BigDecimal> values) {
            addCriterion("PrepayBalance in", values, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceNotIn(List<BigDecimal> values) {
            addCriterion("PrepayBalance not in", values, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("PrepayBalance between", value1, value2, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andPrepaybalanceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("PrepayBalance not between", value1, value2, "prepaybalance");
            return (Criteria) this;
        }

        public Criteria andBalance3IsNull() {
            addCriterion("Balance3 is null");
            return (Criteria) this;
        }

        public Criteria andBalance3IsNotNull() {
            addCriterion("Balance3 is not null");
            return (Criteria) this;
        }

        public Criteria andBalance3EqualTo(BigDecimal value) {
            addCriterion("Balance3 =", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3NotEqualTo(BigDecimal value) {
            addCriterion("Balance3 <>", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3GreaterThan(BigDecimal value) {
            addCriterion("Balance3 >", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3GreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance3 >=", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3LessThan(BigDecimal value) {
            addCriterion("Balance3 <", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3LessThanOrEqualTo(BigDecimal value) {
            addCriterion("Balance3 <=", value, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3In(List<BigDecimal> values) {
            addCriterion("Balance3 in", values, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3NotIn(List<BigDecimal> values) {
            addCriterion("Balance3 not in", values, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3Between(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance3 between", value1, value2, "balance3");
            return (Criteria) this;
        }

        public Criteria andBalance3NotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("Balance3 not between", value1, value2, "balance3");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}